package ru.niir.goodfil.audit.ui.converters;

import org.apache.commons.lang.NotImplementedException;
import ru.niir.goodfil.audit.domain.enums.Crud;
import ru.niir.goodfil.audit.domain.enums.EnviromentSubsystem;
import ru.niir.goodfil.audit.domain.enums.IntegrityEvent;
import ru.niir.goodfil.audit.domain.enums.LoginAction;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import java.text.SimpleDateFormat;

public class EnumConverter implements Converter {
    private static final SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");

    public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String s) {
        throw new NotImplementedException();
    }

    public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object o) {
        if (o instanceof LoginAction) {
            LoginAction e = (LoginAction) o;
            if (e == LoginAction.LOGIN_ATTEMPT) {
                return "Попытка входа";
            }
            if (e == LoginAction.LOGIN_SUCCESS) {
                return "Вход в систему";
            }
        }
        if (o instanceof IntegrityEvent) {
            IntegrityEvent e = (IntegrityEvent) o;
            if (e == IntegrityEvent.LOST) {
                return "Подсистема остановлена (с точностью до 5 минут)";
            }
            if (e == IntegrityEvent.FOUND) {
                return "Подсистема запущена (с точностью до 5 минут)";
            }
        }
        if (o instanceof EnviromentSubsystem) {
            EnviromentSubsystem e = (EnviromentSubsystem) o;
            if (e == EnviromentSubsystem.MAILER) {
                return "Робот рассылки";
            }
            if (e == EnviromentSubsystem.ARCHIVER) {
                return "Архиватор";
            }
            if (e == EnviromentSubsystem.C1) {
                return " Интеграция с 1С на стороне 1С";
            }
            if (e == EnviromentSubsystem.C1_INTEGRATION) {
                return "Интеграция с 1С на стороне ИС";
            }
        }
        if (o instanceof Crud) {
            Crud e = (Crud) o;
            if (e == Crud.CREATE) {
                return "Создание";
            }
            if (e == Crud.DELETE) {
                return "Удаление";
            }
            if (e == Crud.UPDARE) {
                return "Изменение";
            }
        }

        System.out.println(String.valueOf(o));
        return "";
    }
}
